#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2024/3/15 0:32
# @Author : XXX
# @Site : 
# @File : day-6.py
# @Software: PyCharm
'''
    定义一个学生类 Student：属性有学号、姓名、年龄、性别、成绩。
    定义一个班级类Grade：属性有班级名称、班级中的学生类中的学生信息（使用列表存储学生）
    方法：
    1. 查看该班级中的所有学生信息；
    2. 查看指定学号的学生信息；
    3. 查看班级中成绩不及格的学生信息；
    4. 将班级中的学生按照成绩降序排序。
    注：在不继承的情况下，让两个类之间有关联
'''


# 学生类
class Student:

    def __init__(self, no, name, age, sex, score):
        self.no = no
        self.name = name
        self.age = age
        self.sex = sex
        self.score = score

    # 显示学员信息的函数
    def info(self):
        print(f"{self.no},{self.name},{self.age},{self.sex},{self.score}")


class Grade:

    def __init__(self, grade):
        self.grade = grade
        # 使用列表存储学员
        self.stu_list = []

    # 添加学员
    def add_stu(self, stu):
        # 应该要有学员存在判断
        self.stu_list.append(stu)

    # 显示所有学员
    def show_students(self):
        for stu in self.stu_list:
            stu.info()

    # 查看指定学号的学员信息
    def getStuForNo(self, no):
        # 使用一个变量来记录是否找到学员
        count = 0
        for stu in self.stu_list:
            # 找到该学号
            if stu.no == no:
                stu.info()
                count += 1
        if count == 0:
            print("该学员不存在！")

    # 查看不及格的学员
    def getStuForScore(self):
        # 遍历学员成绩,找到不及格的
        for stu in self.stu_list:
            if stu.score < 60:
                stu.info()

    # 根据成绩对学员进行排序
    def sort_score(self):

        # 冒泡排序
        for i in range(len(self.stu_list) - 1):
            # 将第一个元素依次与后面的元素对比
            for j in range(len(self.stu_list) - 1 - i):
                # 判断两个人的成绩,如果A大于B,就进行位置互换
                if self.stu_list[j].score < self.stu_list[j + 1].score:
                    self.stu_list[j], self.stu_list[j + 1] = self.stu_list[j + 1], self.stu_list[j]

        # 输出
        for stu in self.stu_list:
            stu.info()


zs = Student(1, "张三", 16, "男", 80)
ls = Student(2, "李四", 17, "男", 59)
ww = Student(3, "王五", 19, "男", 25)
zl = Student(4, "赵六", 12, "男", 99)
qq = Student(5, "钱七", 15, "男", 90)

grade = Grade("class1")
grade.add_stu(zs)
grade.add_stu(ls)
grade.add_stu(ww)
grade.add_stu(zl)
grade.add_stu(qq)


grade.sort_score()